#ifndef GUI_HPP_INCLUDED
#define GUI_HPP_INCLUDED

#include "Frame/listener.hpp"

//#define GTK
#define SHELL

#ifdef GTK
#include "Gtk/gtkfactory.hpp"
#endif

#ifdef SHELL
#include "Shell/shellfactory.hpp"
#endif

class GUIImpl;

class GUI: public Listener
{
public:
	static GUI* Instance()
	{
		static GUI* gui =0;
		if(!gui)
			gui = new GUI();
		return gui;
	};
	int Init(int argc, char** argv);
	int CreateUI();
	int MainLoop();
	void Update(Image& image);
	void DoEvents(int s);
	
private:
	GUI();
	GUIImpl* m_guiImpl;
};
#endif // GUI_HPP_INCLUDED
